1. Technical Field
The invention relates to windowing toolkits for computers.
2. Background Art
The basic functionality of a computer is dictated both by the hardware of the computer and by the type of operating system it uses. Various operating systems exist in the marketplace, including Solaris from Sun Microsystems, Mac OS from Apple Computer, the xe2x80x9cWindowsxe2x80x9d operating systems, e.g., Windows 95/98 and Windows NT, from Microsoft, and Linux. A given combination of computer hardware, an operating system, and a windowing system will be referred to herein as a xe2x80x9cplatformxe2x80x9d. Prior to the popularity of the Internet, software developers wrote programs specifically designed for individual platforms. Thus, a program written for one platform could not be run on another. However, the advent of the Internet made cross-platform compatibility a necessity.
Prior art FIG. 1 illustrates a conceptional arrangement wherein a first computer 3 running the Solaris platform and a second computer 5 running the Windows 98 platform are connected to a server 9 via the Internet 7. A resource provider using the server 9 might be any type of business, governmental, or educational institution. The resource provider has a need to be able to provide its resources to both the user of the Solaris platform and the user of the Windows 98 platform, but does not have the luxury of being able to custom-design its content for the individual platforms.
The Java(trademark) programming language was developed by Sun Microsystems to address this problem. The Java(trademark) programming language was designed to be simple for the programmer to use, yet to be able to run securely over a network and work on a wide range of platforms.
Referring to FIG. 2, in order to create a Java(trademark) application, the developer first writes the application in human-readable Java(trademark) source code. As used herein, the term xe2x80x9capplicationxe2x80x9d refers to both true Java(trademark) applications and Java(trademark) xe2x80x9cappletsxe2x80x9d which are essentially small applications usually embedded in a web page. In the example shown, the application xe2x80x9cProgramxe2x80x9d 11 is created as a human-readable text file. The name of this text file is given the required character extension xe2x80x9cJavaxe2x80x9d.
A Java(trademark) compiler such as Sun Microsystem""s xe2x80x9cjavacxe2x80x9d 13 is used to compile the source code into a machine-readable binary file 15. The text file will contain Java(trademark) language commands, e.g., xe2x80x9cimport java.awt.Framexe2x80x9d. A discussion of the Java(trademark) language itself is beyond the scope of this document. However, complete information regarding the Java(trademark) program language is available from Sun Microsystems both in print and via the Internet at java.sun.com. The resulting binary file 15 will automatically receive the same file name as the source text file, but will use xe2x80x9c.classxe2x80x9d as the trailing extension. The Java(trademark) runtime environment incorporates a Java(trademark) xe2x80x9cvirtual machinexe2x80x9d (JVM) 16 to convert the xe2x80x9c.classxe2x80x9d byte codes into actual machine executions 17. The machine executions (like drawing windows, buttons, and user prompt fields) will occur in accordance to the application developer""s code instructions. Because Sun Microsystems specifically designed the JVM to run on different platforms, a single set of xe2x80x9c.classxe2x80x9d byte codes will execute on any platform where a JVM has been installed. An Internet browser such as Netscape Navigator and Microsoft Explorer that incorporates a JVM is called a xe2x80x9cJava(trademark) enabledxe2x80x9d browser.
The cross-platform architecture of the Java(trademark) programming language is illustrated in FIG. 3, which shows how the Java(trademark) language enables cross-platform applications over the Internet. In the figure, the computer 3 running the Solaris platform and the computer 5 running the Windows 98 platform are each provided with a Java(trademark) virtual machine 21. The resource provider creates a Java(trademark) application using the Java(trademark) software development kit (xe2x80x9cSDKxe2x80x9d) 23 and makes the complied Java(trademark) byte codes available on the server 9, which in this example is running on a Windows NT platform. Through standard Internet protocols, both the computer 3 and the computer 5 may obtain a copy of the same byte codes and, despite the difference in platforms, execute the byte codes through their respective JVM.
FIG. 4 illustrates an exemplary display on a screen 31 including top-level windows 33, 34, and 35. Each window includes a title bar 37 for displaying the title of the window and, if applicable, a menu bar 39 containing a number of pull down menu buttons defined by the developer. In this example, window 34 is the xe2x80x9cactivexe2x80x9d window, as indicated by the darkened title bar. Windows 33 and 35 are inactive as indicated by the grayed out title bar. The window 33 includes a number of typical components, including xe2x80x9cradio buttonsxe2x80x9d 41 which in this case allow the user to select a prefix, a text field 43 for entering a name, and an address field 45 for entering an address. Component 47 is a xe2x80x9cchooserxe2x80x9d, allowing the user to choose a state. Components 49 are check boxes that allow the user to check one or all of the options that apply. Associated with these check boxes are additional radio buttons 51 and 53 that allow the user to select a desired means of transmission. If the xe2x80x9cquotexe2x80x9d check box 49 is selected and the telephone radio button is selected, the window 34 appears allowing the user to enter telephone numbers. An additional text area 57 is associated with the xe2x80x9cotherxe2x80x9d check box 49. Finally, xe2x80x9csubmitxe2x80x9d and xe2x80x9cresetxe2x80x9d buttons 59 are provided to allow the user to either submit the form or reset it.
When developing a graphical user interface (GUI) such as the example shown in FIG. 4, one issue for consideration by the application developer is the concept of xe2x80x9cfocusxe2x80x9d. Traditionally, the xe2x80x9cfocus ownerxe2x80x9d is the component that, at a given time, receives keyboard input generated by the application user. The user, of course, has the ability to transfer focus between components. The primary method for changing focus is by clicking on a new component using a mouse. However, an alternate way of changing focus is by using the keyboard. Using the keyboard to change focus is referred to as xe2x80x9cfocus traversalxe2x80x9d. Typically, focus traversal is achieved using pre-defined keys on the keyboard (for example, the TAB key) or some equivalent device in an accessible environment. For example, referring again to FIG. 4, a cursor 61 (which would be blinking) is shown in the xe2x80x9chome phonexe2x80x9d text field 62. This means component 62 is the focus owner, and keyboard input generated by the user would be sent to that field. Typically, the user may then move to the next component (xe2x80x9ccell phonexe2x80x9d) without using the mouse by simply hitting the TAB key, or return to the previous component (xe2x80x9cwork numberxe2x80x9d) by hitting SHIFT-TAB. This is referred to as forward and backward focus traversal, respectively. In addition to user-initiated traversal, client code can also initiate traversal programmatically.
In one aspect, the invention relates to a method for keyboard navigation in a graphical user interface, comprising: defining a key event dispatcher configured to recognize a special mode entry character and a special mode exit character; upon entry of the special mode entry character by a user, entering a special mode wherein subsequent key events are manipulated by the key event dispatcher while a current focus owner is maintained; and exiting the special mode upon entry of the special mode exit character by the user. In some embodiments, the special mode comprises an input method mode, and wherein manipulation of subsequent key events comprises diverting key events to an input method object.
In some embodiments, the special mode comprises an accessible navigation mode, and wherein manipulation of subsequent key events comprises using the key events to navigate the graphical user interface in accordance with an accessible navigation policy.
In some embodiments, the special mode comprises a window navigation mode, and wherein manipulation of subsequent key events comprises using the key events to navigate a plurality of windows in accordance with a window navigation policy.
In another aspect, the invention relates to a windowing toolkit for development of a graphical user interface, the toolkit comprising a plurality of tools having code suitable to be executed by a computer, the toolkit comprising: a first tool for defining a special mode entry character and a special mode exit character; a second tool for defining a special mode to be entered upon entry of the special mode entry character and to be exited upon entry of the special mode exit character, the second tool providing a manipulation mechanism by which key events are manipulated while in the special mode and while maintaining a current focus owner.
In some embodiments, the special mode defined by the second tool comprises an input method mode, and wherein the manipulation mechanism diverts key events to an input method object.
In some embodiments, the special mode defined by the second tool comprises an accessible navigation mode, and wherein the manipulation mechanism uses the key events to navigate the graphical user interface in accordance with an accessible navigation policy.
In some embodiments, the special mode defined by the second tool comprises a window navigation mode, and wherein the manipulation mechanism uses the key events to navigate a plurality of windows in accordance with a window navigation policy.